package com.atguigu.gmall.realtime.app.func;

import com.atguigu.gmall.realtime.util.KeywordUtil;
import org.apache.flink.table.annotation.DataTypeHint;
import org.apache.flink.table.annotation.FunctionHint;
import org.apache.flink.table.functions.TableFunction;
import org.apache.flink.types.Row;

/**
 * 自定义UDTF函数，完成分词功能
 *
 * 步骤：定义类继承TableFunction
 *       添加输出的注解
 *       提供eval方法，可以重载
 */

@FunctionHint(output = @DataTypeHint("ROW<word STRING>"))

public class KeywordUDTF extends TableFunction<Row> {
    public void eval(String text) {
        for (String keyword : KeywordUtil.analyze(text)) {
            // use collect(...) to emit a row
            collect(Row.of(keyword));
        }
    }

}
